package com.zlj.user.service;

import com.zlj.user.dao.DaoFactory;
import com.zlj.user.dao.UserDao;
import com.zlj.user.domain.User;

/**
 * User的业务逻辑层
 * @author bashen
 *
 */
public class UserService {
	//把具体的实现类创建隐藏到工厂中，使其完全依赖接口而不是实现类
    private UserDao userDao = DaoFactory.getUserDao(); 
    
    /**
     * 注册功能
     * @param user
     * @throws UserException
     */
    public void regist(User user) throws UserException {
    	/*
    	 * 根据用户名去查询，如果返回的是null,则抛出异常
    	 * 否则添加
    	 */
    	User _user = userDao.findByUsername(user.getUsername());
    	
    	if(_user != null) throw new UserException("用户名" + user.getUsername() + "已存在！");
    	
    	userDao.addUser(user);
    }
    
    /**
     * 登录功能
     * @param username
     * @return
     * @throws UserException
     */
    public User login(User form) throws UserException {
    	
    	//使用form中的username进行查询，得到User对象
    	User l_user = userDao.findByUsername(form.getUsername());
    	
    	//如果User对象为null,说明用户名不存在，抛出异常
    	if(l_user == null) throw new UserException("用户名：" + form.getUsername() + "不存在，请先去注册！");
    	
    	//如果User对象不为null,用form中的password与查出来的User对象中的password进行比较，如果不相等，抛出异常，异常信息为：密码错误！
    	if(!form.getPassword().equals(l_user.getPassword())) {
    		throw new UserException("密码错误！");
    	}
    	
    	//如果密码相等，返回查出来的User对象，因为查出来的User对象包含所有用户信息
    	return l_user;
    }
}
